package org.muyu.example2;

import org.muyu.example2.component.InsuranceContract;

/**
 * 创建型模式 => 生成器模式实例【精简版】
 *
 * 组成部件
 * 1. 生成器接口【Builder】
 * 2. 具体的生成器实现【ConcreteBuilder】 => 此示例最终产品只有一种表示，所以就将其作为产品的内部类进行构建，只为保险合同服务，也就不需要builder的接口进行定义了
 * 3. 指导者【Director】 => 指导者的意义在于操作builder，使不同的的builder实现类执行统一的动作，但是此示例只有一种表示，指导工作就放到了客户端上
 * 4. 产品【Product】 => InsuranceContract保险合同对象就是最终的产品
 *
 */
public class Client {
    public static void main(String[] args) {
        //创建构建器
        InsuranceContract.ConcreteBuilder builder = new InsuranceContract.ConcreteBuilder("001", 1675180800000L, 1678440927198L);
        //设置需要的数据，然后构建保险合同对象
        InsuranceContract contract = builder.setPersonName("慕鱼").setOtherData("无低保").build();
        //操作保险合同对象的方法
        contract.someOperation();
        System.out.println(contract);
    }
}
